热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

外力|通病_普通web项目转为maven项目整理

篇首语:本文由编程笔记#小编为大家整理,主要介绍了普通web项目转为maven项目整理相关的知识,希望对你有一定的参考价值。   现在越来越多的公司和

篇首语:本文由编程笔记#小编为大家整理,主要介绍了普通web项目转为maven项目整理相关的知识,希望对你有一定的参考价值。



     现在越来越多的公司和团队开始使用maven来管理项目。对个人而言,之前一直不太喜欢maven结构的项目,需要配置pom.xml,每次打开IDE之后都需要加载maven,电脑配置低的话就卡半天,balabala。后来用得多了也就习惯了,就跟用Myeclipse用习惯了,再用IDEA时一样,估计是大多数人的通病,习惯于一个模式,没有外力就不想再更换(还不是因为懒,哈哈)。

     好了,言归正传,之前的时候接到个任务,需要把一个普通的web项目改成maven的,花了点时间就研究了研究。


1.maven结构
     maven结构的web项目目录如下:








根据maven项目“约定优于配置”的原则,其中./src/main/用于存放源代码,./src/test用于存放单元测试代码,./target用于存放编译、打包后的输出文件。按理说src/main/作为Source Folder就可以了,不过为了方便开发,通常会在main下面加上java和resources两个目录,其中java放置java代码,而resources文件夹存放相关配置文件)。





2.maven的配置都在pom.xml里面

2.1.pom.xml在改的时候我主要用到三个配置


2.1.1.是项目引入插件所需要的额外依赖,主要是依赖的jar包。



junit

junit

4.11

test





2.1.2.因为改造前的项目的jar好多是框架私有包,在maven仓库没有,这时就需要将jar包install到本地maven仓库,



mvn install:intall-file -Dfile=myprivatejar.jar -DgroupId=com.cn.wddqz -DartifactId=non-maven-proj -Dversion=1 -Dpackaging=jar




2.1.3.dependency的version里还可以用$junit.version表示,然后再中加入4.11


2.2.profiles:在列的项目构建profile,用来激活不同的profile


因为项目有多个测试环境,所以根据不同的环境要有若干套配置文件,次时就需要多个profile,用来放置不同的配置文件。此时maven结构中的resouces就需
要有若干个文件夹了ceshi1_resouces、ceshi2_resouces、ceshi3_resouces等.
配置文件如下:


ceshi1

ceshi1_resouces


true




org.apache.maven.plugins
maven-war-plugin
2.4


true









注:进行maven编译的时候需要加上" -P ceshi1 "


2.3.build构建项目需要的配置信息:


示例如下:




org.apache.maven.plugins

maven-compiler-plugin
2.4


1.6
1.6

UTF-8




maven-war-plugin
2.4

true

MavenDemo



$project.basedir/src/main/$package.environment
WEB-INF/classes
true








3.注意事项:
3.1.maven项目改造前,IDE里面需要装maven插件,本地配置maven的环境变量。
3.2.我是先新建了个maven的web项目,然后将原来web项目的源码拷贝到对应目录的方式实现的。

4.后记:
改造的时候只用到了以上的一些内容,基本上完成了任务,基于个人能力可能有些方面没考虑到,或者项目比较简单,而没有用到更复杂的知识,如果大家
有更好的案例,欢迎补充。






加个Apache Maven 入门:


Apache Maven 入门篇 ( 上 )


Apache Maven 入门篇 ( 下 )


推荐阅读
  • 本文详细介绍了如何在本地环境中安装配置Frida及其服务器组件,以及如何通过Frida进行基本的应用程序动态分析,包括获取应用版本和加载的类信息。 ... [详细]
  • 本文将详细介绍如何配置并整合MVP架构、Retrofit网络请求库、Dagger2依赖注入框架以及RxAndroid响应式编程库,构建高效、模块化的Android应用。 ... [详细]
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
  • 深入解析mt_allocator内存分配器(二):多线程与单线程场景下的实现
    本文详细介绍了mt_allocator内存分配器在多线程和单线程环境下的实现机制。该分配器以2的幂次方字节为单位分配内存,支持灵活的配置和高效的性能。文章分为内存池特性描述、内存池实现、单线程内存池实现、内存池策略类实现及多线程内存池实现等部分,深入探讨了内存池的初始化、内存分配与回收的具体实现。 ... [详细]
  • 深入解析C++ Atomic编程中的内存顺序
    在多线程环境中,为了防止多个线程同时修改同一数据导致的竞争条件,通常会使用内核级同步对象,如事件、互斥锁和信号量等。然而,这些方法往往伴随着高昂的上下文切换成本。本文将探讨如何利用C++11中的原子操作和内存顺序来优化多线程编程,减少不必要的开销。 ... [详细]
  • 为什么会崩溃? ... [详细]
  • iOS 小组件开发指南
    本文详细介绍了iOS小部件(Widget)的开发流程,从环境搭建、证书配置到业务逻辑实现,提供了一系列实用的技术指导与代码示例。 ... [详细]
  • 本文介绍了如何通过创建自定义 XML 文件来修改 Android 中 Spinner 的项样式,包括颜色和大小的调整。 ... [详细]
  • Java中List的forEach方法与字符串拼接的兼容性问题
    本文深入探讨了在Java中使用List的forEach方法时遇到的字符串拼接问题,提供了有效的解决方案及背后的原理分析,旨在帮助开发者更好地理解和解决此类问题。 ... [详细]
  • 使用 Babylon.js 实现地球模型与切片地图交互(第三部分)
    本文继续探讨在上一章节中构建的地球模型基础上,如何通过自定义的 `CameraEarthWheelControl` 类来实现更精细的地图缩放控制。我们将深入解析该类的实现细节,并展示其在实际项目中的应用。 ... [详细]
  • 本文探讨了如何选择一个合适的序列化版本ID(serialVersionUID),包括使用生成器还是简单的整数,以及在不同情况下应如何处理序列化版本ID。 ... [详细]
  • 在CentOS 7中部署Nginx并配置SSL证书
    本文详细介绍了如何在CentOS 7操作系统上安装Nginx服务器,并配置SSL证书以增强网站的安全性。适合初学者和中级用户参考。 ... [详细]
  • 深入解析Java并发之ArrayBlockingQueue
    本文详细探讨了ArrayBlockingQueue,这是一种基于数组实现的阻塞队列。ArrayBlockingQueue在初始化时需要指定容量,因此它是一个有界的阻塞队列。文章不仅介绍了其基本概念和数据结构,还深入分析了其源码实现,包括各种入队、出队、获取元素和删除元素的方法。 ... [详细]
  • Python Selenium WebDriver 浏览器驱动详解与实践
    本文详细介绍了如何使用Python结合Selenium和unittest构建自动化测试框架,重点解析了WebDriver浏览器驱动的配置与使用方法,涵盖Chrome、Firefox、IE/Edge等主流浏览器。 ... [详细]
  • 来自FallDream的博客,未经允许,请勿转载,谢谢。一天一套noi简直了.昨天勉强做完了noi2011今天教练又丢出来一套noi ... [详细]
author-avatar
蓝客杂货
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有